Dataformのクライアントライブラリ(python)を使ってみる(その1)
概要
Dataformにはpythonのクライアントライブラリが用意されています。python以外にもGo、Java、Node.jsのクライアントライブラリがあります。
クライアントライブラリを用いることでDataform APIをREST APIを用いるより簡潔に呼び出すことができます。
今回はpythonのクライアントライブラリを実際に使ってみてDataformの操作をしてみました。
動かしてみる
準備
まずはDataformのクライアントライブラリをインストールします。
pip install google-cloud-dataform
今回はCloud Shell上で実行するので特に認証情報は設定しませんがローカルで試す場合などは適宜認証情報を設定してください。
ワークスペースの一覧を取得してみる
インストールできて認証情報を設定できたらあと動かすだけです。
リファレンスを見て好きなことをしてみましょう。
とりあえずワークスペースの一覧を取得してみます。
ワークスペース一覧取得は以下のAPIでできるようです。
リファレンスを元に実装してみました。
from google.cloud import dataform_v1beta1
def list_workspaces(project_id, location, repository_id):
client = dataform_v1beta1.DataformClient()
repository_path = client.repository_path(project_id, location, repository_id)
request = dataform_v1beta1.ListWorkspacesRequest(
parent=repository_path
)
page_result = client.list_workspaces(request=request)
for response in page_result:
print(response)
if __name__ == "__main__":
project_id = "プロジェクトID"
location = "リージョン"
repository_id = "リポジトリ名"
list_workspaces(project_id, location, repository_id)
簡単に説明します。
from google.cloud import dataform_v1beta1
pipでインストールしたDataformクライアントライブラリを読み込んでいます。この中に今回やりたいことが詰まっています。
client = dataform_v1beta1.DataformClient()
Dataformのクライアントインスタンスを作成します。
repository_path = client.repository_path(project_id, location, repository_id)
repository_path
を用いてリポジトリパスを作成しています。
このAPIを用いなくても実装できるのですが、その場合は自分で以下の形式で
リポジトリパスを作成する必要があります。
projects/プロジェクトID/locations/リージョン/repositories/リポジトリ名
せっかくなので使ってみました。
page_result = client.list_workspaces(request=request)
for response in page_result:
print(response)
list_workspaces
を用いてワークスペースの一覧を取得します。page_resultにワークスペース一覧が詰まっているのでfor文でループしてprintします。
スクリプトを実行すると以下のような出力がされます。
name: "projects/プロジェクトid/locations/asia-northeast1/repositories/リポジトリ名/workspaces/ワークスペース名1"
name: "projects/プロジェクトid/locations/asia-northeast1/repositories/リポジトリ名/workspaces/ワークスペース名2"
name: "projects/プロジェクトid/locations/asia-northeast1/repositories/リポジトリ名/workspaces/ワークスペース名3"
※ワークスペース名などは環境によって異なります。
リポジトリの一覧を取得してみる
せっかくなのでもう一つAPIを叩いてみます。
リポジトリ一覧を取得してみます。
from google.cloud import dataform_v1beta1
def list_repositories(project_id, location):
client = dataform_v1beta1.DataformClient()
parent = f"projects/{project_id}/locations/{location}"
request = dataform_v1beta1.ListRepositoriesRequest(
parent=parent
)
page_result = client.list_repositories(request=request)
for response in page_result:
print(response)
if __name__ == "__main__":
project_id = "プロジェクトID"
location = "リージョン"
list_repositories(project_id, location)
さきほどとほぼ同様のコードです。違いは引数にリポジトリ名が不要になった点でしょうか。
実行すると、以下のような出力になりました。
name: "projects/プロジェクトID/locations/リージョン/repositories/リポジトリ名1"
name: "projects/プロジェクトID/locations/リージョン/repositories/リポジトリ名2"
※環境によって異なります。上記は出力イメージです。
まとめ
クライアントライブラリは当然DataformのREST APIと使い勝手がことなります。
どちらも優れた面があるのでワークロードによって選択するとよいと考えます。
今回は簡単な動作確認程度のことしかしていませんが、次はもう少し発展的なこと(リポジトリ内のファイルを取得する、ワークフローを起動するなど)をやってみたいと思います。
それではまた。
参考